Item-based social discovery

ABSTRACT

A system and method for item-based social discovery are provided. In example embodiments, entity data that associates respective items of a plurality of items with respective entities of a plurality of entities is stored, each entity of the plurality of entities being registered at a social network service. An item indication, generated in response to a user action of a user, that indicates a user affinity for a mutual item is received, the user being registered at the social network service. A suggested entity from among the plurality of entities is identified by matching the mutual item with respective items of the plurality of items. The suggested entity does not have a social network relationship on the social network service with the user. Causing recommendation of a new social network relationship on the social network service between the user and the suggested member entity.

RELATED APPLICATIONS

This application claims the priority benefit of U.S. Provisional Application No. 61/869,557, entitled “IMPROVED RETAIL EXPERIENCE,” filed Aug. 23, 2013, which is hereby incorporated by reference in its entirety.

TECHNICAL FIELD

Embodiments of the present disclosure relate generally to mobile computing technology and, more particularly, but not by way of limitation, to item-based social discovery.

BACKGROUND

In recent years mobile devices, wearable devices, smart devices, and the like have pervaded nearly every aspect of modern life. Social networks such as Facebook®, Twitter®, and many others have transformed Internet-based social interactions. In addition to these trends, the near ubiquity of wireless networks provides users with access to information and services provided by the Internet at virtually any physical location.

BRIEF DESCRIPTION OF THE DRAWINGS

Various ones of the appended drawings merely illustrate example embodiments of the present disclosure and cannot be considered as limiting its scope.

FIG. 1A is a block diagram illustrating a networked system, according to some example embodiments.

FIG. 1B illustrates a block diagram showing components provided within the system of FIG. 1A, according to some example embodiments.

FIG. 2 is a block diagram illustrating an example embodiment of an item discovery system, according to some example embodiments.

FIG. 3 is a flow diagram illustrating an example method for identifying suggested entities and recommending, to the user, forming a new social network relationship between the suggested entities and the user, according to some example embodiments.

FIG. 4 is a flow diagram illustrating various communications in an example method for identifying suggested entities and recommending, to the user, forming a new social network relationship between the suggested entities and the user, according to some example embodiments.

FIGS. 5 and 6 are flow diagrams illustrating example methods for identifying and presenting an item to the user, according to some example embodiments.

FIG. 7 is a flow diagram illustrating a method for generating an item indication based on a user action, according to some example embodiments.

FIG. 8 is a depiction of the user triggering an item indication based on geographic location data received from a device of the user, according to some example embodiments.

FIGS. 9-15 illustrate example user interfaces, according to some example embodiments.

FIG. 16 depicts an example mobile device and mobile operating system interface, according to some example embodiments.

FIG. 17 is a block diagram illustrating an example of a software architecture that may be installed on a machine, according to some example embodiments.

FIG. 18 illustrates a diagrammatic representation of a machine in the form of a computer system within which a set of instructions may be executed for causing the machine to perform any one or more of the methodologies discussed herein, according to an example embodiment.

The headings provided herein are merely for convenience and do not necessarily affect the scope or meaning of the terms used.

DETAILED DESCRIPTION

The description that follows includes systems, methods, techniques, instruction sequences, and computing machine program products that embody illustrative embodiments of the disclosure. In the following description, for the purposes of explanation, numerous specific details are set forth in order to provide an understanding of various embodiments of the inventive subject matter. It will be evident, however, to those skilled in the art, that embodiments of the inventive subject matter may be practiced without these specific details. In general, well-known instruction instances, protocols, structures, and techniques are not necessarily shown in detail.

In various example embodiments, entity data that associates items with entities is stored. For instance, the entity data may indicate that a particular entity likes, wants, or owns a particular item. In some implementations, the particular entity specified liking, wanting, or owning the particular item (e.g., the entity inputting a designation for the item into a user interface configured to receive the item designation) in the past and the item designations are stored for subsequent analysis. In other implementations, the item designation may be automatically determined (e.g., scanning purchase histories of entities to determine items owned by the entities).

An item indication that indicates a user affinity for a mutual item is generated in response to a user action. For example, the user specifies the user affinity (e.g., liking or wanting the mutual item) at a user interface configured to receive the item designation. In other examples, the item indication is generated automatically on behalf of the user in response to the user action. For example, user location data is monitored and matched or compared with entity location data (e.g., a local merchant store that sells various items). If the monitoring of the user location data indicates that the user location matches an entity location (e.g., the user entering the local merchant store), an item indication associated with items of the entity is generated. In this way, the user action automatically triggers the item indication.

In various embodiments, the user and the entities are members of one or more social network services (e.g., Facebook® or Twitter®). In an embodiment, suggested entities that are members of the social network service are identified based on the mutual item. For example, the mutual item indicated by the item indication is matched with items associated with the entities.

In embodiments, a new social network relationship or connection between the user and at least one of the suggested entities is recommended to the user. For example, the user may be presented with a notification, prompt, or another user interface that provides the user an option to form the new social network relationship with a particular suggested entity. In this manner, the user may form social network relationships or connect with previously unknown entities interested in items the user has an affinity for.

With reference to FIG. 1A, an example embodiment of a high-level client-server-based network architecture 100 is shown. A networked system 102 provides server-side functionality via a network 104 (e.g., the Internet or wide area network (WAN)) to a client device 110. In some implementations, a user (e.g., user 106) interacts with the networked system 102 using the client device 110. FIG. 1A illustrates, for example, a web client 112 (e.g., a browser, such as the Internet Explorer® browser developed by Microsoft® Corporation of Redmond, Wash. State), client application(s) 114, and a programmatic client 116 executing on the client device 110. The client device 110 may include the web client 112, the client application(s) 114, and the programmatic client 116 alone, together, or in any suitable combination. Although FIG. 1A shows one client device 110, in other implementations, the network architecture 100 comprises multiple client devices.

In various implementations, the client device 110 comprises a computing device that includes at least a display and communication capabilities that provide access to the networked system 102 via the network 104. The client device 110 comprises, but is not limited to, a remote device, work station, computer, general purpose computer, Internet appliance, hand-held device, wireless device, portable device, wearable computer, cellular or mobile phone, Personal Digital Assistant (PDA), smart phone, tablet, ultrabook, netbook, laptop, desktop, multi-processor system, microprocessor-based or programmable consumer electronic, game consoles, set-top box, network Personal Computer (PC), mini-computer, and so forth. In an example embodiment, the client device 110 comprises one or more of a touch screen, accelerometer, gyroscope, biometric sensor, camera, microphone, Global Positioning System (GPS) device, and the like.

The client device 110 communicates with the network 104 via a wired or wireless connection. For example, one or more portions of the network 104 comprises an ad hoc network, an intranet, an extranet, a Virtual Private Network (VPN), a Local Area Network (LAN), a wireless LAN (WLAN), a Wide Area Network (WAN), a wireless WAN (WWAN), a Metropolitan Area Network (MAN), a portion of the Internet, a portion of the Public Switched Telephone Network (PSTN), a cellular telephone network, a wireless network, a Wireless Fidelity (Wi-Fi®) network, a Worldwide Interoperability for Microwave Access (WiMax) network, another type of network, or any suitable combination thereof.

In some example embodiments, the client device 110 includes one or more of the applications (also referred to as “apps”) such as, but not limited to, web browsers, book reader apps (operable to read e-books), media apps (operable to present various media forms including audio and video), fitness apps, biometric monitoring apps, messaging apps, electronic mail (email) apps, and e-commerce site apps (also referred to as “marketplace apps”). In some implementations, the client application(s) 114 include various components operable to present information to the user and communicate with networked system 102. In some embodiments, if the e-commerce site application is included in the client device 110, then this application may be configured to locally provide the user interface and at least some of the functionalities with the application configured to communicate with the networked system 102, on an as needed basis, for data or processing capabilities not locally available (e.g., access to a database of items available for sale, to authenticate a user, to verify a method of payment). Conversely, if the e-commerce site application is not included in the client device 110, the client device 110 can use its web browser to access the e-commerce site (or a variant thereof) hosted on the networked system 102.

In various example embodiments, the user (e.g., the user 106) comprises a person, a machine, or other means of interacting with the client device 110. In some example embodiments, the user 106 is not be part of the network architecture 100, but interacts with the network architecture 100 via the client device 110 or another means. For instance, the user 106 provides input (e.g., touch screen input or alphanumeric input) to the client device 110 and the input is communicated to the networked system 102 via the network 104. In this instance, the networked system 102, in response to receiving the input from the user 106, communicates information to the client device 110 via the network 104 to be presented to the user 106. In this way, the user can interact with the networked system 102 using the client device 110.

An Application Program Interface (API) server 120 and a web server 122 may be coupled to, and provide programmatic and web interfaces respectively to, one or more application server(s) 140. The application server(s) 140 may host one or more publication system(s) 142, payment system(s) 144, and an item discovery system 150, each of which may comprise one or more modules or applications and each of which may be embodied as hardware, software, firmware, or any combination thereof. The application server(s) 140 are, in turn, shown to be coupled to one or more database server(s) 124 that facilitate access to one or more information storage repositories or database(s) 126. In an example embodiment, the database(s) 126 are storage devices that store information to be posted (e.g., publications or listings) to the publication system(s) 142. The database(s) 126 may also store digital goods information in accordance with some example embodiments.

Additionally, a third party application 132, executing on a third party server 130, is shown as having programmatic access to the networked system 102 via the programmatic interface provided by the API server 120. For example, the third party application 132, utilizing information retrieved from the networked system 102, may support one or more features or functions on a website hosted by the third party. The third party website may, for example, provide one or more promotional, marketplace, or payment functions that are supported by the relevant applications of the networked system 102.

The publication system(s) 142 may provide a number of publication functions and services to the users that access the networked system 102. The payment system(s) 144 may likewise provide a number of functions to perform or facilitate payments and transactions. While the publication system(s) 142 and payment system(s) 144 are shown in FIG. 1A to both form part of the networked system 102, it will be appreciated that, in alternative embodiments, each system 142 and 144 may form part of a payment service that is separate and distinct from the networked system 102. In some example embodiments, the payment system(s) 144 may form part of the publication system(s) 142.

In some implementations, the item discovery system 150 provides functionality to identity suggested entities for the user to form a social network relationship with, suggest items the user may be interested in, facilitate a purchase pick-up time for a particular item at a local entity (e.g., a local merchant store), among other functions. In some example embodiments, the item discovery system 150 communicates with the client device 110, the third party server(s) 130 (e.g., social network services), the publication system(s) 142 (e.g., retrieving listings), and the payment system(s) 144 (e.g., purchasing a listing). In an alternative example embodiment, the item discovery system 150 is a part of the publication system(s) 142. The item discovery system 150 will be discussed further in connection with FIG. 2 below.

Further, while the client-server-based network architecture 100 shown in FIG. 1A employs a client-server architecture, the present inventive subject matter is, of course, not limited to such an architecture, and may equally well find application in a distributed, or peer-to-peer, architecture system, for example. The various systems of the applications server(s) 140 (e.g., the publication system(s) 142 and the payment system(s) 144) may also be implemented as standalone software programs, which do not necessarily have networking capabilities.

The web client 112 may access the various systems of the networked system 102 (e.g., the publication system(s) 142) via the web interface supported by the web server 122. Similarly, the programmatic client 116 and client application(s) 114 may access the various services and functions provided by the networked system 102 via the programmatic interface provided by the API server 120. The programmatic client 116 may, for example, be a seller application (e.g., the Turbo Lister application developed by eBay® Inc., of San Jose, Calif.) to enable sellers to author and manage listings on the networked system 102 in an off-line manner, and to perform batch-mode communications between the programmatic client 116 and the networked system 102.

FIG. 1B illustrates a block diagram showing components provided within the publication system(s) 142, according to some embodiments. In various example embodiments, the publication system(s) 142 may comprise a market place system to provide market place functionality facilitating the purchase of items associated with item listings on an e-commerce website). The publication system(s) 142 may be hosted on dedicated or shared server machines that are communicatively coupled to enable communications between server machines. The components themselves are communicatively coupled (e.g., via appropriate interfaces) to each other and to various data sources, so as to allow information to be passed between the applications or so as to allow the applications to share and access common data. Furthermore, the components may access one or more database(s) 126 via the database server(s) 124.

The publication system(s) 142 may provide a number of publishing, listing, and price-setting mechanisms whereby a seller (also referred to as a “first user”) may list (or publish information concerning) goods or services for sale or barter, a buyer (also referred to as a “second user”) can express interest in or indicate a desire to purchase or barter such goods or services, and a transaction (such as a trade) may be completed pertaining to the goods or services. To this end, the publication system(s) 142 may comprise a publication engine 160 and a selling engine 162. The publication engine 160 may publish information, such as item listings or product description pages, on the publication system(s) 142. In some embodiments, the selling engine 162 may comprise one or more fixed-price engines that support fixed-price listing and price setting mechanisms and one or more auction engines that support auction-format listing and price setting mechanisms (e.g., English, Dutch, Chinese, Double, Reverse auctions, etc.). The various auction engines may also provide a number of features in support of these auction-format listings, such as a reserve price feature whereby a seller may specify a reserve price in connection with a listing and a proxy-bidding feature whereby a bidder may invoke automated proxy bidding. The selling engine 162 may further comprise one or more deal engines that support merchant-generated offers for products and services.

A listing engine 164 allows sellers to conveniently author listings of items or authors to author publications. In one embodiment, the listings pertain to goods or services that a user (e.g., a seller) wishes to transact via the networked system 102. In some embodiments, the listings may be an offer, deal, coupon, or discount for the good or service. Each good or service is associated with a particular category. The listing engine 164 may receive listing data such as title, description, and aspect name/value pairs. Furthermore, each listing for a good or service may be assigned an item identifier. In other embodiments, a user may create a listing that is an advertisement or other form of information publication. The listing information may then be stored to one or more storage devices coupled to the networked system 102 (e.g., database(s) 126). Listings also may comprise product description pages that display a product and information (e.g., product title, specifications, and reviews) associated with the product. In some embodiments, the product description page may include an aggregation of item listings that correspond to the product described on the product description page.

The listing engine 164 also may allow buyers to conveniently author listings or requests for items desired to be purchased. In some embodiments, the listings may pertain to goods or services that a user (e.g., a buyer) wishes to transact via the networked system 102. Each good or service is associated with a particular category. The listing engine 164 may receive as much or as little listing data, such as title, description, and aspect name/value pairs, that the buyer is aware of about the requested item. In some embodiments, the listing engine 164 may parse the buyer's submitted item information and may complete incomplete portions of the listing. For example, if the buyer provides a brief description of a requested item, the listing engine 164 may parse the description, extract key terms, and use those terms to make a determination of the identity of the item. Using the determined item identity, the listing engine 164 may retrieve additional item details for inclusion in the buyer item request. In some embodiments, the listing engine 164 may assign an item identifier to each listing for a good or service.

In some embodiments, the listing engine 164 allows sellers to generate offers for discounts on products or services. The listing engine 164 may receive listing data, such as the product or service being offered, a price or discount for the product or service, a time period for which the offer is valid, and so forth. In some embodiments, the listing engine 164 permits sellers to generate offers from sellers' mobile devices. The generated offers may be uploaded to the networked system 102 for storage and tracking.

Searching the publication system(s) 142 is facilitated by a searching engine 166. For example, the searching engine 166 enables keyword queries of listings published via the publication system(s) 142. In example embodiments, the searching engine 166 receives the keyword queries from a device of a user and conducts a review of the storage device storing the listing information. The review will enable compilation of a result set of listings that may be sorted and returned to the client device 110 of the user. The searching engine 166 may record the query (e.g., keywords) and any subsequent user actions and behaviors (e.g., navigations, selections, or click-throughs).

The searching engine 166 also may perform a search based on a location of the user. A user may access the searching engine 166 via a mobile device and generate a search query. Using the search query and the user's location, the searching engine 166 may return relevant search results for products, services, offers, auctions, and so forth to the user. The searching engine 166 may identify relevant search results both in list form and graphically on a map. Selection of a graphical indicator on the map may provide additional details regarding the selected search result. In some embodiments, the user may specify, as part of the search query, a radius or distance from the user's current location to limit search results.

In a further example, a navigation engine 168 allows users to navigate through various categories, catalogs, or inventory data structures according to which listings may be classified within the publication system(s) 142. For example, the navigation engine 168 allows a user to successively navigate down a category tree comprising a hierarchy of categories (e.g., the category tree structure) until a particular set of listings is reached. Various other navigation applications within the navigation engine 168 may be provided to supplement the searching and browsing applications. The navigation engine 168 may record the various user actions (e.g., clicks) performed by the user in order to navigate down the category tree.

In some embodiments, a personalization engine 170 provides functionality to personalize various aspects of user interactions with the networked system 102. For instance, the user can define, provide, or otherwise communicate personalization settings used by the personalization engine 170 to determine interactions with the publication system(s) 142. In further example embodiments, the personalization engine 170 determines personalization settings automatically and personalizes interactions based on the automatically determined settings. For example, the personalization engine 170 determines a native language of the user and automatically presents information in the native language.

FIG. 2 is a block diagram of the item discovery system 150 that provides functionality to identity suggested entities for the user to form a social network relationship with, suggest items the user may be interested in, facilitate a purchase pick-up time for a particular item at a local entity (e.g., a local merchant store), among other functions, according to some example embodiments. In an example embodiment, the item discovery system 150 includes a presentation module 210, a communication module 220, a data module 230, an item module 240, an analysis module 250, and a purchase module 260. All, or some, of the modules 210-260 of FIG. 2, communicate with each other, for example, via a network coupling, shared memory, and the like. It will be appreciated that each module of modules 210-260 may be implemented as a single module, combined into other modules, or further subdivided into multiple modules. Other modules not pertinent to example embodiments may also be included, but are not shown.

In some implementations, the presentation module 210 provides various presentation and user interface functionality operable to interactively present and receive information from the user. For instance, the presentation module 210 can cause presentation, to the user, of various user interfaces that recommend social network relationships, present various items and item listings, receive personalization settings, and other user interfaces to facilitate the functionality described herein. In various implementations, the presentation module 210 presents or causes presentation of information (e.g., visually displaying information on a screen, acoustic output, haptic feedback). Interactively presenting information is intended to include the exchange of information between a particular device and the user. The user may provide input to interact with the user interface in many possible manners such as alphanumeric, point based (e.g., cursor), tactile, or other input (e.g., touch screen, tactile sensor, light sensor, infrared sensor, biometric sensor, microphone, gyroscope, accelerometer, or other sensors), and the like. It will be appreciated that the presentation module 210 provides many other user interfaces to facilitate functionality described herein. Further, it will be appreciated that “presenting” as used herein is intended to include communicating information or instructions to a particular device that is operable to perform presentation based on the communicated information or instructions.

The communication module 220 provides various communications functionality and web services. For example, the communication module 220 provides network communication such as communicating with the networked system 102, the client device 110, and the third party server(s) 130. In various example embodiments, the network communication may operate over wired or wireless modalities. Web services are intended to include retrieving information from the third party server(s) 130, the database(s) 126, and the application server(s) 140. In some implementations, information retrieved by the communication module 220 comprises data associated with the user (e.g., user profile information from an online account, social network service data associated with the user), data associated with one or more items listed on an e-commerce website (e.g., images of the item, reviews of the item, item price), or other data to facilitate the functionality described herein.

The data module 230 provides functionality to store (e.g., save), access, or otherwise manage a wide variety of data. For example, the data module 230 accesses the entity data that associates items with entities (e.g., stored in the database(s) 126). The data module 230 may also access member data from one or more social networks corresponding to a particular entity or the user, item data from various sources (e.g., the publication system(s) 142), purchase histories of entities, or other data.

The item module 240 provides functionality to manage item indications, according to some implementations. For instance, the item module 240 may receive an item indication generated in response to a user action. In other instances, the item module 240 may generate the item indication based on various user actions (e.g., the user inputting an item designation such as a “like” to a user interface).

The analysis module 250 provides a variety of analysis functions to facilitate the functionality described herein. For example, the analysis module 250 identifies entities and items by analyzing various data. In a specific example, the analysis module 250 identifies the suggested entities based on items corresponding to the plurality of entities.

The purchase module 260 provides functionality to facilitate the purchase of a particular item or item listing. For instance, the purchase module 260 may facilitate the purchase of an item at a local store including determining a pick-up time and location.

FIG. 3 is a flow diagram illustrating an example method 300 for recommending suggested entities for the user to form the new social network relationship with based, at least in part, on a user indicated affinity for a particular item, according to some example embodiments. The operations of the method 300 may be performed by components of the item discovery system 150. At operation 310, the data module 230 accesses entity data that associates respective items of a plurality of items with respective entities of a plurality of entities. It will be appreciated that the entities are intended to include businesses, organizations, people, and the like.

In various implementations, all, or some, of the entities of the plurality of entities may be registered at one or more social network services (e.g., Facebook® or Twitter®). That is to say, a portion of the entities of the plurality of entities are members of one or more social network services. In addition, the user is a member or a registered user at one or more social network services, according to various implementations. For instance, if a particular entity comprises a person, the person may maintain a member profile on a particular social network service that includes member data corresponding to the person (e.g., posts, likes, social graph data, check-ins, images of the person). In another instance, a particular entity comprises a business and the business maintains a member profile on a particular social network service that includes member data corresponding to the business (e.g., posts related to the business, news related to the business, contact information of the business, a location of the business such as an address, likes, social graph data).

The entity data includes data that associates respective entities of the plurality of entities with various items. For example, if a particular entity comprises a person, the person may have provided an indication of liking a particular item (e.g., activating a “like button” associated with a particular item). In another example, the particular entity may be associated with a particular item via a post provided by the particular entity (e.g., a post mentioning the item determined by the analysis module 250). In another example, the particular entity may submit input to a user interface, provided by the presentation module 210, configured to receive input associated with various items. In this example, the entity may browse various items presented in the user interface and activate user interface elements that, for example, indicate the entity “liking,” “wanting,” or “owning” a particular item (see FIG. 10 for an example).

In some implementations, the data module 230 may generate the entity data by retrieving member data associated with the plurality of entities and determining associations between various entities of the plurality of entities and various items. For instance, the data module 230 may retrieve member data and analyze the member data to associate particular members with particular items (e.g., scanning likes, posts, or check-ins to identify an association between an entity and an item). In a specific example, the data module 230 may determine an association between a particular entity and items of a particular merchant store (e.g., a brick-and-mortar store) based on a check-in by the particular entity to the particular merchant store (e.g., the entity is associated with items of the merchant store based on the check-in to the store). In another example, the data module 230 accesses purchase history data corresponding to the plurality of entities (e.g., from the publication system(s) 142). In this example, the data module 230 associates respective entities of the plurality of entities with respective items included in the purchase history. Of course, it will be appreciated by one skilled in the art that many other schemes and techniques can be employed by the data module 230 to associate various entities with various items.

In some implementations, the data module 230 stores, retains, or saves the entity data in a storage device such as database(s) 126, the entity data to be subsequently accessed by the data module 230. The data module 230 can store, retain, or save the entity data in association with an entity identifier, social network identifier, other identifiers, or any suitable combination thereof. For example, the data module 230 accesses entity data corresponding to a particular entity among the plurality of entities via a lookup based on entity identifier, social network identifier, other identifiers, or any suitable combination thereof.

At operation 320, the item module 240 receives an item indication, generated in response to a user action of a user, according to some example embodiments. In various implementations, the item indication indicates a user affinity for a mutual item. For example, the mutual item is an item that is common or in-common between the user and a particular entity (e.g., both the user and the particular entity have an affinity for the mutual item). In some examples, the mutual item is common to the user and one or more entities. The user action comprises user interface interactions, user activities (e.g., the user entering a merchant store), and so on. For example, the user provides input to a user interface, provided by the presentation module 210, configured to receive the item indication (the presentation module 210 communicates the item indication to the item module 240). In this example, the entity may browse various items presented in the user interface and activate user interface elements that, for example, indicate the entity “liking,” “wanting,” or “owning” a particular item (see FIG. 10 for an example).

In other implementations, the item indication is automatically generated in response to the user action on behalf of the user. For example, the data module 230 monitors, tracks, or otherwise observes user location data of the user (e.g., as determined by a GPS component of a mobile device of the user). If the user enters a particular merchant store, the analysis module 250 may identify the particular merchant store by matching a physical user location included in the user location data with the particular merchant store location (e.g., retrieved from the third party server(s) 130). In this example, the user is associated with items of the particular merchant store based on the user entering the particular merchant store or being in a physical vicinity (e.g., a configurable distance such as ten meters) of the particular merchant store. In another example, the user is carrying a mobile device operable to detect NFC beacons integrated with a particular merchant store. In this example, the mobile device of the user communicates detected beacons to the data module 230 and the data module 230 subsequently communicates the beacon detection to the item module 240 to automatically generate the item indication. In this example, the user is associated with the items of the particular merchant store based on the beacon detection. The item discovery system 150 may employ many other schemes and techniques to automatically generate the item indication based on the user action; the above examples are merely non-limiting examples.

At operation 330, the analysis module 250 identifies a suggested entity or proposed entity from among the plurality of entities by matching the mutual item with respective items of the plurality of items. In various implementations, the suggested entity does not have a social network relationship on a particular social network service with the user. In an embodiment, the analysis module 250 identifies the suggested entity based on entities that are associated with a same or similar item as the mutual item.

In further embodiments, the analysis module 250 identifies multiple suggested entities and ranks the multiple suggested entities according to relevance criteria. For instance, a particular entity may be associated with the mutual item, but the association may be tenuous. For example, an entity that “wants” or “owns” a particular item may have a stronger association to the particular item than an entity that simply “likes” the particular item. In this example, the particular entity that has the stronger association to the particular item may be ranked higher than entities with weaker associations to the particular item.

In still further embodiments, the user may be associated with multiple mutual items and the analysis module 250 identifies the suggested entity based on an occurrence count of the multiple mutual items and items associated with a particular entity. For example, if a particular entity is associated with three out of four of the multiple mutual items, the analysis module 250 may identify or rank more highly that particular entity over another entity that is associated with one out of four of the mutual items. It will be appreciated that the analysis module 250 may employ many other schemes and techniques to identify the suggested entity based on the mutual item and the above are merely non-limiting examples.

At operation 340, the presentation module 210 causes recommendation of a new social network relationship on the social network service between the user and the suggested entity. A social network relationship or social network connection (e.g., a “friend,” “follower,” or “favorite friend”) is a designation stored by the social network service that associates members of the social network service. In some cases, the social network relationship provides additional features available on the social network service such as an increasing level of disclosure between members with a social network relationship. In various implementations, the presentation module 210 causes recommendation of the new social network relationship by causing presentation, to the user, of a user interface including an option to form the new social network relationship between the user and the suggested entity (see FIG. 12 for an example). In some instances, the user may select the option to form the new social network relationship, received at the presentation module 210, and the presentation module 210 may communicate a request to form the new social network relationship to the social network.

In various implementations, the analysis module 250 determines that the user and the suggested entity are registered at, or are members of, the same social network service prior recommending the new social network relationship between the suggested entity and the user. For example, a mutual social network service may be a particular social network service that the user and a particular entity are members of. In other words, the mutual social network service may be a social network service common to the user and one or more entities. In some implementations, the analysis module 250 identifies the mutual social network service by comparing social network services associated with the user to social network services associated with a particular entity. In scenarios where there are multiple mutual social network services, the presentation module 210 can cause recommendation of forming a new social network relationship on the multiple mutual social network services or a portion of the multiple social network services. In still other example embodiments, the analysis module 250 may facilitate registering (e.g., becoming a member of a particular social network service) the user at a particular social network service in the case the suggested entity is a member that particular social network service and the user is not a member of that particular social network service. In this way, the analysis module 250 facilitates the forming of the new social network relationship between the user and the suggested entity on a particular social network service.

FIG. 4 is a flow diagram 400 illustrating various communications in an example method for identifying suggested entities and recommending, to the user, forming a new social network relationship between the suggested entities and the user, according to some example embodiments. As discussed above, at the operation 310, the data module 230 accesses the entity data. In various example embodiments, the data module 230 retrieves, accesses, or otherwise obtains member data associated with the plurality of entities from the social network service(s) 402. The data module 230 may employ a portion of the member data to generate the entity data (e.g., associate entities with particular items based on “likes” by the entities). At operation 410, the social network service(s) 402 provide the member data. For example, the data module 230 may communicate a request (e.g., an API call) to the social network service(s) 402 to provide member data corresponding to a particular entity. In some cases, the social network service(s) 402 provide the information without authorization credentials corresponding to the entity (e.g., publicly available information). In other cases, the data module 230 provides the authorization credentials to the social network service(s) 402 to obtain the member data corresponding to the particular entity (e.g., the particular entity inputs the authorization credentials into a user interface provided by the presentation module 210). As discussed above, the data module 230 stores the entity data in a storage device such as database(s) 126.

At operation 320, the item module 240 receives the item indication, as described above. In various implementations, the item indication is triggered based on the user action. In some cases, the user action includes a user device such as user device(s) 404. At operation 420, the user device(s) 404 trigger the item indication by communicating various data to the item module 240. For instance, the user submits a “like” corresponding to an item to a user interface configured to receive the “like” provided by the presentation module 210. In another example, the user device(s) 404 trigger the item indication by detecting a NFC beacon corresponding to a particular merchant store associated with various items (e.g., the user entering a sporting goods store and moving within range of a NFC beacon integrated into the sporting goods store). In this example, the item indication may be associated with multiple items (e.g., any item carried by the sporting goods store) and the item module 240 may identify an item among the multiple items based on user preferences or other user data. The user preferences may include item categories or brands specified by the user.

At the operation 330, the analysis module 250 identifies the suggested entity from among the plurality of entities, as discussed above. Subsequently, at the operation 340, the presentation module 210 causes recommendation of the new social network relationship between the user and the suggested entity to the user. For example, the presentation module 210 communicates a user interface including the recommendation to the user device(s) 404. At operation 430, the user device(s) 404 present the recommendation to the user (e.g., display the user interface communicated by the presentation module 210).

In further embodiments, the presentation module 210 provides the user an option to form the new social network relationship. At operation 440, the user device(s) 404 receive a selection of the option to form the new social network relationship from the user. For instance, the presentation module 210 generates a user interface including a user interface element that, when activated, sends a request to the social network service(s) 402 (e.g., the mutual social network service), the request being a request to form the new social network relationship between the user and the suggested entity. In some implementations, the user provides user authorization credentials to effectuate the forming of the new social network relationship at the social network service(s) 402. For example, the user authorization credentials can be included in the request to form the new social network relationship. In some instances, the presentation module 210 requests the user authorization credentials from the user (e.g., via a user interface configured to receive the user authorization credentials) which are stored fur subsequent authorizations (e.g., using a token or a cookie). In other instances, the request may trigger the social network service(s) 402 to obtain the user authorization credential from the user (e.g., prompt the user to log in). At operation 450, the social network service(s) 402 forms the new social network relationship between the user and the suggested entity.

FIG. 5 is a flow diagram illustrating an example method 500 for identifying and presenting an item to the user, according to some example embodiments. The operations of the method 500 may be performed by components of the item discovery system 150. At operation 510, the analysis module 250 identifies a non-mutual item of the plurality of items corresponding to the suggested entity. In other words, the non-mutual item is an item of the suggested entity that is not in common, or non-common, between the user and the suggested entity, according to some implementations. For example, if the suggested entity has “liked” or otherwise designated ten items and the user has “liked” or otherwise designated two of those ten items, the analysis module 250 identifies at least one of the eight items not “liked” or otherwise designated by the user.

At operation 520, the presentation module 210 causes presentation of the non-mutual item to the user. In some implementations, the presentation includes an option for the user to generate another item indication that indicates an affinity for the non-mutual item. In this manner, the user browses items corresponding to the suggested entity and may designate (e.g., “like”) items that may be of interest to the user. The newly designated item may be the basis for identifying further suggested entities in the method 300 described above.

FIG. 6 is a flow diagram illustrating an example method 600 for identifying and presenting an item to the user, according to some example embodiments. The operations of the method 600 may be performed by components of the item discovery system 150. At operation 610, the analysis module 250 identifies a contact entity of the user. The contact entity is an entity registered at, or a member of, the social network site that previously formed a social network relationship with the user on the social network site (e.g., friends, followers of the user). For instance, the user is a member of a user social network service and the user's “friends,” “follows,” or similar social network designations (e.g., designations stored in social graph data on the user social network service) on the user social network service are contact entities of the user in this instance. In some implementations, the analysis module 250 identifies the contact entity by accessing social graph data stores at the social network service.

At operation 620, the data module 230 accesses a contact item corresponding to the contact entity. For example, once the analysis module 250 identifies the contact entity, the data module 230 accesses the entity data corresponding to the contact entity, if it exists, that is stored in the database(s) 126 (e.g., via a lookup of the contact entity using an entity identifier, social network member identifier, or other identifier). In another example, the analysis module 250 dynamically determines the contact item based on an analysis of member data corresponding to the network entity. For instance, the member data corresponding to the identified contact entity may include posts, check-ins, and the like that the analysis module 250 may analyze to identify the contact item.

At operation 630, the presentation module 210 causes presentation of the contact item to the user. For instance, the presentation module 210 communicates a user interface including a description of the contact item to the user device with instructions to present the user interface to the user. Thus, the user may browse items associated with social network contacts or connections on the social network service of the user. In further embodiments, the user may designate (e.g., “like,” or “want”) the contact item that may be of interest to the user. The newly designated item may be the basis for identifying further suggested entities in the method 300 described above.

FIG. 7 is a flow diagram illustrating a method for generating an item indication based on a user action, according to some example embodiments. The operations of the method 700 may be performed by components of the item discovery system 150. At operation 710, the data module 230 monitors user location data, received from a user device of the user. The user location data includes a physical user location of the user. For instance, the data module 230 may access GPS data provided by a mobile device of the user.

At operation 720, the data module 230 accesses local entity location data that includes physical entity locations of local entities. For example, predefined physical entity locations may be stored in a storage device such as database(s) 126 and accessed by the data module 230.

At operation 730, the analysis module 250 identifies a local entity from among the plurality of entities by matching the user location data with the entity location data. For example, the analysis module 250 may compare the physical user location to the physical entity locations to identity entities within a distance of the physical user location (e.g., within 20 feet of the physical user location). The distance may be configurable.

At operation 740, the data module 230 accesses local item data corresponding to the local entity. The data module 230 may access the local item data from the entity data, the third party servers 130, or elsewhere. The local item data comprises a plurality of local items. For instance, the local entity may be a local merchant store or local business that the user walked by or entered.

At operation 750, the item module 240 generates the item indication that indicates a user affinity for a local item included in the plurality of local items. In a specific example, the user may enter a local sporting goods store and on that basis, the item module 240 may generate an item indication for a particular sporting goods item associated with the sporting goods store. In some example embodiments, the item module 240 may analyze user data or user preference to determine an item among the local items and generate the item indication corresponding to the determined item.

In further example embodiments, the purchase module 260 provides the user with an option to purchase the local item from the local entity. For example, the presentation module 210 causes presentation of a user interface configured to provide the user with option to purchase the local item (see FIG. 14 for an example). In some implementations, based on receiving a selection of the option to purchase the local item, the purchase module 260 facilitates the purchase of the local item including determining a pick-up time and location for the local item.

FIG. 8 is a depiction 800 of the user triggering an item indication based on geographic location data received from a device of the user, according to some example embodiments. Scene 802 depicts a local store 804, a local store radius 806, a user radius 808, a user 810, and a communication coupling 812. In the example of FIG. 8, the user 810 is carrying a mobile device operable to provide location data (e.g., via a GPS component of the mobile device). The mobile device of the user may be communicatively coupled to the network 104 via the communication coupling 812. Thus, the mobile device of the user 810 may communicate with the networked system 102 that includes the item discovery system 150, according to some implementations.

In some implementations, the mobile device of the user 810 is providing user location data to the data module 230 in real-time. Thus, the analysis module 250 may determine the local entity in real-time. The term “real-time data,” as used herein, is intended to include data associated with an event currently happening, such as, for example, the real-time data communicated to the data module 230 after a delay interval (e.g., due to transmission delay or other delays such as being temporarily stored at an intermediate device) between capturing the data and the data module 230 receiving the data.

In the example of FIG. 8, if the analysis module 250 determines that the local store 804 is within the user radius 808, or conversely the user 810 is within the local store radius 806, then the item module 240 may generate the item indication associated with the local store 804. In other example embodiments, the analysis module 250 determines the suggested entity based, at least in part, on the user location data. For instance, if the user 810 moves within the local store radius 806, the analysis module 250 may identify the local store 804 as the suggested entity.

Example User Interfaces

FIGS. 9-15 depict example user interfaces for interactively presenting information to the user. Although FIGS. 9-15 depict specific example user interfaces and user interface elements, these are merely non-limiting examples and many other alternate user interfaces and user interface elements may be generated by the presentation module 210 and presented to the user. It will be noted that alternate presentations of the displays of FIGS. 9-15 may include additional information, graphics, options, and so forth; other presentations may include less information, or may provide abridged information for easy use by the user.

FIG. 9 depicts an example device 900 (e.g., a smart phone) displaying an example user interface 910. The user interface 910 includes section 920 that provides profile information to the user such as number of connections the user currently has or other profile information. The user interface 910 includes user interface elements 930, 940, 950, and 960 that may indicate entity data corresponding to the user such as number of items the user owns, number of item “likes,” or number of item “wants.” Activating user interface element 970 may present another user interface that includes recommended items to the user (e.g., items associated with contact entities of the user or items associated with suggested entities). In some implementations, the user interface 910 includes section 980 that indicates recent activity. For instance, user interface element 990 indicates activity associated with a particular entity. In this instance, the entity is a person named “Melissa Miller,” although in other instances the entity may be a business.

FIG. 10 depicts an example device 1000 displaying an example user interface 1010 that includes user interface element 1020 and item listings 1030 and 1040, according to some example embodiments. In various implementations, the user interface 1010 displays an interactive scrollable list of item listings (e.g., listings 1030 and 1040) to the user. In some implementations, the user interface element 1020 provides an option to sort the item listings 1030 and 1040, or otherwise navigate the item listings 1030 and 1040, according to various schemes such as sorting based on recentness (e.g., based on temporal information corresponding to respective item listings), item price, distance from the user, relevance, or other metrics.

In user interface 1010, the user interface element 1020 displays item listings according to a particular designation such as “wants,” “likes,” or “haves.” The user may interact with the item listings by activating a particular item listing. A shaded corner may indicate an activated item listing, for example. In an example scenario, the user may select the “likes” user interface element to activate the user interface element associated with an item the user has an affinity for. In this scenario, the user “liking” a particular item listing may trigger the item indication discussed above. In some embodiments, the item listings 1030 and 1040 include various portions of item data such as an item image, price, merchant, brand, other information retrieved from the publication system(s) 142, and the like. In further embodiments, activating a particular item listing presents additional information corresponding to the particular item listing.

FIG. 11 depicts an example device 1100 displaying an example user interface 1110. In some implementations, the user interface 1110 is displayed in response to the user activating a user interface element corresponding to an item of the user interface 1010 (e.g., tapping a particular item to view more detailed information about the item). User interface element 1120 may provide information associated with an item such as an item image, price, merchant, brand, other information retrieved from the publication system(s) 142, and the like. User interface element 1130 may provide the user with an option to purchase the item. User interface element 1140 may provide the user with an option to designate the item associated with user interface element 1120 as “wanted.” Section 1150 may display a scrollable list of entities that have designated the item associated with user interface element 1120 as wanted. In some implementations, the user may browse the list of entities and identify an entity to form a new social network relationship with. User interface element 1160 provides information corresponding to the group of entities displayed in section 1150. In this example, the user interface element 1160 indicates the number of entities that designated the item associated with user interface element 1120 as “wanted.” User interface element 1170 indicates a particular entity among the entities that designated the item associated with user interface element 1120 as “wanted.” In some implementations, activating the user interface element 1170 provides additional information corresponding to the particular entity or initiates a request to form a social network relationship with particular entity. User interface element 1180 provides an option to display additional entities that designated the item associated with user interface element 1120 as “wanted.”

FIG. 12 depicts an example device 1200 displaying an example user interface 1210. User interface element 1220 may provide information associated with an item such as an item image, price, merchant, brand, other information retrieved from the publication system(s) 142, and the like. User interface element 1230 indicates item designations provided by the plurality of entities. In this example, 92 entities designated “wants,” 482 entities designated “likes,” and 43 designated “haves.” Such information may assist the user in determining how popular among the plurality of entities a particular item is. The user interface 1210 may present information associated with entities that have designated the item associated with user interface element 1220. For instance, user interface element 1240 may be a particular entity among the plurality of entities that “likes” the item associated with user interface element 1220. The user may form a social network relationship or connect with the entity associated with user interface element 1240 by activating user interface element 1250. In this way, the user may form social network relationships with entities based on a particular item.

FIG. 13 depicts an example device 1300 displaying an example user interface 1310. User interface element 1320 may provide an option to enable personalization settings or disable personalization settings. User interface elements 1330 and 1350 are item categories that may be specified as interesting to the user. Specifying a particular item category as being of interest may be used in the various analyses described above to identify entities and items that the user is interested in. User interface element 1340 may indicate that the user has designated a particular item category as being of interest. Although FIG. 13 is directed towards personalization settings including item categories, it will be appreciated that many other types of personalization settings may be inputted by the user.

FIG. 14 depicts an example device 1400 displaying an example user interface 1410 that includes an item listing 1420, user interface element 1430, and user interface element 1440, according to some example embodiments. In an example embodiment, the item listing 1420 includes various portions of item data such as an item image, price, merchant, brand, other information retrieved from the publication system(s) 142, and the like. In some implementations, activating the item listing 1420 presents additional information corresponding to the item listing 1420. In an example embodiment, activating the user interface element 1430 provides the user the option to purchase the item corresponding to the item listing 1420 (e.g., activating the user interface element 1440 may facilitate a transaction for the item, for example, using the payment system(s) 144). In some example embodiments, user interface element 1440 includes a map with locations of the item listing 1420 or a merchant 1460 that sells the item corresponding to the item listing 1420. In further example embodiments, the current user location 1450 is determined (e.g., via a GPS component of a mobile device of the user) and used to determine nearby merchants that sell the item corresponding to the item listing 1420.

FIG. 15 depicts an example device 1500 displaying an example user interface 1510 that includes a notification 1520, according to some example embodiments. In various example embodiments, the presentation module 210 causes presentation of the notification 1520 to the user. For instance, the presentation module 210 communicates, to the device 1500, instructions to present the notification 1520. In some instances, the instructions include notification content, generated by the presentation module 210, such as a message (e.g., pertinent information) to be presented to the user. In example embodiments, the notification 1520 comprises a text message, such as Short Message Service (SMS) messages, Multimedia Messaging Service (MMS), Enhanced Messaging Service (EMS), and so forth. In other example embodiments, the notification 1520 comprises a push notification or another similar type of notification. In further example embodiments, the notification 1520 comprises interactive user interface elements such as user interface elements 1530. In these example embodiments, the user interface elements 1530 provide the user an option to make a selection (e.g., through an SMS system, mobile application). In user interface 1510, the notification 1520 provides the user the option to form the new social network relationship with a particular merchant. In some implementations, activating the user interface element 1530 communicates a request to the social network service to form the new social network relationship between the user and a particular entity.

Modules, Components, and Logic

Certain embodiments are described herein as including logic or a number of components, modules, or mechanisms. Modules may constitute either software modules (e.g., code embodied on a machine-readable medium or in a transmission signal) or hardware modules. A “hardware module” is a tangible unit capable of performing certain operations and may be configured or arranged in a certain physical manner. In various example embodiments, one or more computer systems (e.g., a standalone computer system, a client computer system, or a server computer system) or one or more hardware modules of a computer system (e.g., a processor or a group of processors) may be configured by software (e.g., an application or application portion) as a hardware module that operates to perform certain operations as described herein.

In some embodiments, a hardware module may be implemented mechanically, electronically, or any suitable combination thereof. For example, a hardware module may include dedicated circuitry or logic that is permanently configured to perform certain operations. For example, a hardware module may be a special-purpose processor, such as a Field-Programmable Gate Array (FPGA) or an Application Specific Integrated Circuit (ASIC). A hardware module may also include programmable logic or circuitry that is temporarily configured by software to perform certain operations. For example, a hardware module may include software encompassed within a general-purpose processor or other programmable processor. It will be appreciated that the decision to implement a hardware module mechanically, in dedicated and permanently configured circuitry, or in temporarily configured circuitry (e.g., configured by software) may be driven by cost and time considerations.

Accordingly, the phrase “hardware module” should be understood to encompass a tangible entity, be that an entity that is physically constructed, permanently configured (e.g., hardwired), or temporarily configured (e.g., programmed) to operate in a certain manner or to perform certain operations described herein. As used herein, “hardware-implemented module” refers to a hardware module. Considering embodiments in which hardware modules are temporarily configured (e.g., programmed), each of the hardware modules need not be configured or instantiated at any one instance in time. For example, where a hardware module comprises a general-purpose processor configured by software to become a special-purpose processor, the general-purpose processor may be configured as respectively different special-purpose processors (e.g., comprising different hardware modules) at different times. Software may accordingly configure a particular processor or processors, for example, to constitute a particular hardware module at one instance of time and to constitute a different hardware module at a different instance of time.

Hardware modules can provide information to, and receive information from, other hardware modules. Accordingly, the described hardware modules may be regarded as being communicatively coupled. Where multiple hardware modules exist contemporaneously, communications may be achieved through signal transmission (e.g., over appropriate circuits and buses) between or among two or more of the hardware modules. In embodiments in which multiple hardware modules are configured or instantiated at different times, communications between such hardware modules may be achieved, for example, through the storage and retrieval of information in memory structures to which the multiple hardware modules have access. For example, one hardware module may perform an operation and store the output of that operation in a memory device to which it is communicatively coupled. A further hardware module may then, at a later time, access the memory device to retrieve and process the stored output. Hardware modules may also initiate communications with input or output devices, and can operate on a resource (e.g., a collection of information).

The various operations of example methods described herein may be performed, at least partially, by one or more processors that are temporarily configured (e.g., by software) or permanently configured to perform the relevant operations. Whether temporarily or permanently configured, such processors may constitute processor-implemented modules that operate to perform one or more operations or functions described herein. As used herein, “processor-implemented module” refers to a hardware module implemented using one or more processors.

Similarly, the methods described herein may be at least partially processor-implemented, with a particular processor or processors being an example of hardware. For example, at least some of the operations of a method may be performed by one or more processors or processor-implemented modules. Moreover, the one or more processors may also operate to support performance of the relevant operations in a “cloud computing” environment or as a “software as a service” (SaaS). For example, at least some of the operations may be performed by a group of computers (as examples of machines including processors), with these operations being accessible via a network (e.g., the Internet) and via one or more appropriate interfaces (e.g., an Application Program Interface (API)).

The performance of certain of the operations may be distributed among the processors, not only residing within a single machine, but deployed across a number of machines. In some example embodiments, the processors or processor-implemented modules may be located in a single geographic location (e.g., within a home environment, an office environment, or a server farm). In other example embodiments, the processors or processor-implemented modules may be distributed across a number of geographic locations.

Applications

FIG. 16 illustrates an example mobile device 1600 executing a mobile operating system (e.g., iOS™, Android™, Windows® Phone, or other mobile operating systems), according to example embodiments. In one embodiment, the mobile device 1600 includes a touch screen operable to receive tactile data from a user 1602. For instance, the user 1602 may physically touch 1604 the mobile device 1600, and in response to the touch 1604, the mobile device 1600 determines tactile data such as touch location, touch force, or gesture motion. In various example embodiments, the mobile device 1600 displays a home screen 1606 (e.g., Springboard on iOS™) operable to launch applications or otherwise manage various aspects of the mobile device 1600. In some example embodiments, the home screen 1606 provides status information such as battery life, connectivity, or other hardware statuses. In some implementations, the user 1602 activates user interface elements by touching an area occupied by a respective user interface element. In this manner, the user 1602 may interact with the applications. For example, touching the area occupied by a particular icon included in the home screen 1606 causes launching of an application corresponding to the particular icon.

Many varieties of applications (also referred to as “apps”) may be executing on the mobile device 1600 such as native applications (e.g., applications programmed in Objective-C running on iOS™ or applications programmed in Java running on Android™), mobile web applications (e.g., Hyper Text Markup Language-5 (HTML5)), or hybrid applications (e.g., a native shell application that launches an HTML5 session). For example, the mobile device 1600 includes a messaging app 1620, audio recording app 1622, a camera app 1624, a book reader app 1626, a media app 1628, a fitness app 1630, a file management app 1632, a location app 1634, a browser app 1636, a settings app 1638, a contacts app 1640, a telephone call app 1642, or other apps (e.g., gaming apps, social networking apps, biometric monitoring apps), a third party app 1644.

Software Architecture

FIG. 17 is a block diagram 1700 illustrating an architecture of software 1702, which may be installed on any one or more of the devices described above. FIG. 17 is merely a non-limiting example of a software architecture, and it will be appreciated that many other architectures may be implemented to facilitate the functionality described herein. The software 1702 may be implemented by hardware such as machine 1800 of FIG. 18 that includes processors 1810, memory 1830, and I/O components 1850. In this example architecture, the software 1702 may be conceptualized as a stack of layers where each layer may provide a particular functionality. For example, the software 1702 includes layers such as an operating system 1704, libraries 1706, frameworks 1708, and applications 1710. Operationally, the applications 1710 invoke application programming interface (API) calls 1712 through the software stack and receive messages 1714 in response to the API calls 1712, according to some implementations.

In various implementations, the operating system 1704 manages hardware resources and provides common services. The operating system 1704 includes, for example, a kernel 1720, services 1722, and drivers 1724. The kernel 1720 acts as an abstraction layer between the hardware and the other software layers in some implementations. For example, the kernel 1720 provides memory management, processor management (e.g., scheduling), component management, networking, security settings, among other functionality. The services 1722 may provide other common services for the other software layers. The drivers 1724 may be responsible for controlling or interfacing with the underlying hardware. For instance, the drivers 1724 may include display drivers, camera drivers, Bluetooth® drivers, flash memory drivers, serial communication drivers (e.g., Universal Serial Bus (USB) drivers), Wi-Fi® drivers, audio drivers, power management drivers, and so forth.

In some implementations, the libraries 1706 provide a low-level common infrastructure that may be utilized by the applications 1710. The libraries 1706 may include system 1730 libraries (e.g., C standard library) that may provide functions such as memory allocation functions, string manipulation functions, mathematic functions, and the like. In addition, the libraries 1706 may include API libraries 1732 such as media libraries (e.g., libraries to support presentation and manipulation of various media formats such as Moving Picture Experts Group-4 (MPEG4), Advanced Video Coding (H.264 or AVC), Moving Picture Experts Group Layer-3 (MP3), Advanced Audio Coding (AAC), Adaptive Multi-Rate (AMR) audio codec, Joint Photographic Experts Group (JPEG or JPG), Portable Network Graphics (PNG)), graphics libraries (e.g., an OpenGL framework used to render in two dimensions (2D) and three dimensions (3D) in a graphic content on a display), database libraries (e.g., SQLite to provide various relational database functions), web libraries (e.g., WebKit to provide web browsing functionality), and the like. The libraries 1706 may also include a wide variety of other libraries 1734 to provide many other APIs to the applications 1710.

The frameworks 1708 provide a high-level common infrastructure that may be utilized by the applications 1710, according to some implementations. For example, the frameworks 1708 provide various graphic user interface (GUI) functions, high-level resource management, high-level location services, and so forth. The frameworks 1708 may provide abroad spectrum of other APIs that may be utilized by the applications 1710, some of which may be specific to a particular operating system or platform.

In an example embodiment, the applications 1710 include a home application 1750, a contacts application 1752, a browser application 1754, a book reader application 1756, a location application 1758, a media application 1760, a messaging application 1762, a game application 1764, and a broad assortment of other applications such as third party application 1766. According to some embodiments, the applications 1710 are programs that execute functions defined in the programs. Various programming languages may be employed to create one or more of the applications 1710, structured in a variety of manners, such as object-orientated programming languages (e.g., Objective-C, Java, or C++) or procedural programming languages (e.g., C or assembly language). In a specific example, the third party application 1766 (e.g., an application developed using the Android™ or iOS™ software development kit (SDK) by an entity other than the vendor of the particular platform) may be mobile software running on a mobile operating system such as iOS™, Android™, Windows® Phone, or other mobile operating systems. In this example, the third party application 1766 may invoke the API calls 1712 provided by the mobile operating system 1704 to facilitate functionality described herein.

Example Machine Architecture and Machine-Readable Medium

FIG. 18 is a block diagram illustrating components of a machine 1800, according to some example embodiments, able to read instructions from a machine-readable medium (e.g., a machine-readable storage medium) and perform any one or more of the methodologies discussed herein. Specifically, FIG. 18 shows a diagrammatic representation of the machine 1800 in the example form of a computer system, within which instructions 1816 (e.g., software, a program, an application, an applet, an app, or other executable code) for causing the machine 1800 to perform any one or more of the methodologies discussed herein may be executed. In alternative embodiments, the machine 1800 operates as a standalone device or may be coupled (e.g., networked) to other machines. In a networked deployment, the machine 1800 may operate in the capacity of a server machine or a client machine in a server-client network environment, or as a peer machine in a peer-to-peer (or distributed) network environment. The machine 1800 may comprise, but not be limited to, a server computer, a client computer, a personal computer (PC), a tablet computer, a laptop computer, a netbook, a set-top box (STB), a personal digital assistant (PDA), an entertainment media system, a cellular telephone, a smart phone, a mobile device, a wearable device (e.g., a smart watch), a smart home device (e.g., a smart appliance), other smart devices, a web appliance, a network router, a network switch, a network bridge, or any machine capable of executing the instructions 1816, sequentially or otherwise, that specify actions to be taken by machine 1800. Further, while only a single machine 1800 is illustrated, the term “machine” shall also be taken to include a collection of machines 1800 that individually or jointly execute the instructions 1816 to perform any one or more of the methodologies discussed herein.

The machine 1800 may include processors 1810, memory 1830, and I/O components 1850, which may be configured to communicate with each other via a bus 1802. In an example embodiment, the processors 1810 (e.g., a Central Processing Unit (CPU), a Reduced Instruction Set Computing (RISC) processor, a Complex Instruction Set Computing (CISC) processor, a Graphics Processing Unit (GPU), a Digital Signal Processor (DSP), an Application Specific Integrated Circuit (ASIC), a Radio-Frequency Integrated Circuit (RFIC), another processor, or any suitable combination thereof) may include, for example, processor 1812 and processor 1814 that may execute instructions 1816. The term “processor” is intended to include multi-core processors that may comprise two or more independent processors (also referred to as “cores”) that may execute instructions contemporaneously. Although FIG. 18 shows multiple processors, the machine 1800 may include a single processor with a single core, a single processor with multiple cores (e.g., a multi-core process), multiple processors with a single core, multiple processors with multiples cores, or any combination thereof.

The memory 1830 may include a main memory 1832, a static memory 1834, and a storage unit 1836 accessible to the processors 1810 via the bus 1802. The storage unit 1836 may include a machine-readable medium 1838 on which is stored the instructions 1816 embodying any one or more of the methodologies or functions described herein. The instructions 1816 may also reside, completely or at least partially, within the main memory 1832, within the static memory 1834, within at least one of the processors 1810 (e.g., within the processor's cache memory), or any suitable combination thereof, during execution thereof by the machine 1800. Accordingly, in various implementations, the main memory 1832, static memory 1834, and the processors 1810 are considered as machine-readable media 1838.

As used herein, the term “memory” refers to a machine-readable medium 1838 able to store data temporarily or permanently and may be taken to include, but not be limited to, random-access memory (RAM), read-only memory (ROM), buffer memory, flash memory, and cache memory. While the machine-readable medium 1838 is shown in an example embodiment to be a single medium, the term “machine-readable medium” should be taken to include a single medium or multiple media (e.g., a centralized or distributed database, or associated caches and servers) able to store instructions 1816. The term “machine-readable medium” shall also be taken to include any medium, or combination of multiple media, that is capable of storing instructions (e.g., instructions 1816) for execution by a machine (e.g., machine 1800), such that the instructions, when executed by one or more processors of the machine 1800 (e.g., processors 1810), cause the machine 1800 to perform any one or more of the methodologies described herein. Accordingly, a “machine-readable medium” refers to a single storage apparatus or device, as well as “cloud-based” storage systems or storage networks that include multiple storage apparatus or devices. The term “machine-readable medium” shall accordingly be taken to include, but not be limited to, one or more data repositories in the form of a solid-state memory (e.g., flash memory), an optical medium, a magnetic medium, other non-volatile memory (e.g., Erasable Programmable Read-Only Memory (EPROM)), or any suitable combination thereof. The term “machine-readable medium” specifically excludes non-statutory signals per se.

The I/O components 1850 include a wide variety of components to receive input, provide output, produce output, transmit information, exchange information, capture measurements, and so on. In general, it will be appreciated that the I/O components 1850 may include many other components that are not shown in FIG. 18. The I/O components 1850 are grouped according to functionality merely for simplifying the following discussion and the grouping is in no way limiting. In various example embodiments, the I/O components 1850 include output components 1852 and input components 1854. The output components 1852 include visual components (e.g., a display such as a plasma display panel (PDP), a light emitting diode (LED) display, a liquid crystal display (LCD), a projector, or a cathode ray tube (CRT)), acoustic components (e.g., speakers), haptic components (e.g., a vibratory motor), other signal generators, and so forth. The input components 1854 include alphanumeric input components (e.g., a keyboard, a touch screen configured to receive alphanumeric input, a photo-optical keyboard, or other alphanumeric input components), point based input components (e.g., a mouse, a touchpad, a trackball, a joystick, a motion sensor, or other pointing instrument), tactile input components (e.g., a physical button, a touch screen that provides location and force of touches or touch gestures, or other tactile input components), audio input components (e.g., a microphone), and the like.

In some further example embodiments, the I/O components 1850 include biometric components 1856, motion components 1858, environmental components 1860, or position components 1862 among a wide array of other components. For example, the biometric components 1856 include components to detect expressions (e.g., hand expressions, facial expressions, vocal expressions, body gestures, or eye tracking), measure biosignals (e.g., blood pressure, heart rate, body temperature, perspiration, or brain waves), identify a person (e.g., voice identification, retinal identification, facial identification, fingerprint identification, or electroencephalogram based identification), and the like. The motion components 1858 include acceleration sensor components (e.g., accelerometer), gravitation sensor components, rotation sensor components (e.g., gyroscope), and so forth. The environmental components 1860 include, for example, illumination sensor components (e.g., photometer), temperature sensor components (e.g., one or more thermometer that detect ambient temperature), humidity sensor components, pressure sensor components (e.g., barometer), acoustic sensor components (e.g., one or more microphones that detect background noise), proximity sensor components (e.g., infrared sensors that detect nearby objects), gas sensors (e.g., machine olfaction detection sensors, gas detection sensors to detection concentrations of hazardous gases for safety or to measure pollutants in the atmosphere), or other components that may provide indications, measurements, or signals corresponding to a surrounding physical environment. The position components 1862 include location sensor components (e.g., a Global Position System (GPS) receiver component), altitude sensor components (e.g., altimeters or barometers that detect air pressure from which altitude may be derived), orientation sensor components (e.g., magnetometers), and the like.

Communication may be implemented using a wide variety of technologies. The I/O components 1850 may include communication components 1864 operable to couple the machine 1800 to a network 1880 or devices 1870 via coupling 1882 and coupling 1872, respectively. For example, the communication components 1864 include a network interface component or another suitable device to interface with the network 1880. In further examples, communication components 1864 include wired communication components, wireless communication components, cellular communication components, Near Field Communication (NFC) components, Bluetooth® components (e.g., Bluetooth® Low Energy), Wi-Fi® components, and other communication components to provide communication via other modalities. The devices 1870 may be another machine or any of a wide variety of peripheral devices (e.g., a peripheral device coupled via a Universal Serial Bus (USB)).

Moreover, in some implementations, the communication components 1864 detect identifiers or include components operable to detect identifiers. For example, the communication components 1864 include Radio Frequency Identification (RFID) tag reader components, NFC smart tag detection components, optical reader components (e.g., an optical sensor to detect a one-dimensional bar codes such as Universal Product Code (UPC) bar code, multi-dimensional bar codes such as Quick Response (QR) code, Aztec code, Data Matrix, Dataglyph, MaxiCode, PDF417, Ultra Code, Uniform Commercial Code Reduced Space Symbology (UCC RSS)-2D bar code, and other optical codes), acoustic detection components (e.g., microphones to identify tagged audio signals), or any suitable combination thereof. In addition, a variety of information can be derived via the communication components 1864, such as, location via Internet Protocol (IP) geo-location, location via Wi-Fi® signal triangulation, location via detecting a NFC beacon signal that may indicate a particular location, and so forth.

Transmission Medium

In various example embodiments, one or more portions of the network 1880 may be an ad hoc network, an intranet, an extranet, a virtual private network (VPN), a local area network (LAN), a wireless LAN (WLAN), a wide area network (WAN), a wireless WAN (WWAN), a metropolitan area network (MAN), the Internet, a portion of the Internet, a portion of the Public Switched Telephone Network (PSTN), a plain old telephone service (POTS) network, a cellular telephone network, a wireless network, a Wi-Fi® network, another type of network, or a combination of two or more such networks. For example, the network 1880 or a portion of the network 1880 may include a wireless or cellular network and the coupling 1882 may be a Code Division Multiple Access (CDMA) connection, a Global System for Mobile communications (GSM) connection, or other type of cellular or wireless coupling. In this example, the coupling 1882 may implement any of a variety of types of data transfer technology, such as Single Carrier Radio Transmission Technology (1×RTT), Evolution-Data Optimized (EVDO) technology, General Packet Radio Service (GPRS) technology, Enhanced Data rates for GSM Evolution (EDGE) technology, third Generation Partnership Project (3GPP) including 3G, fourth generation wireless (4G) networks, Universal Mobile Telecommunications System (UMTS), High Speed Packet Access (HSPA), Worldwide Interoperability for Microwave Access (WiMAX), Long Term Evolution (LTE) standard, others defined by various standard setting organizations, other long range protocols, or other data transfer technology.

In example embodiments, the instructions 1816 are transmitted or received over the network 1880 using a transmission medium via a network interface device (e.g., a network interface component included in the communication components 1864) and utilizing any one of a number of well-known transfer protocols (e.g., Hypertext Transfer Protocol (HTTP)). Similarly, in other example embodiments, the instructions 1816 are transmitted or received using a transmission medium via the coupling 1872 (e.g., a peer-to-peer coupling) to devices 1870. The term “transmission medium” shall be taken to include any intangible medium that is capable of storing, encoding, or carrying instructions 1816 for execution by the machine 1800, and includes digital or analog communications signals or other intangible medium to facilitate communication of such software.

Furthermore, the machine-readable medium 1838 is non-transitory (in other words, not having any transitory signals) in that it does not embody a propagating signal. However, labeling the machine-readable medium 1838 as “non-transitory” should not be construed to mean that the medium is incapable of movement; the medium should be considered as being transportable from one physical location to another. Additionally, since the machine-readable medium 1838 is tangible, the medium may be considered to be a machine-readable device.

Language

Throughout this specification, plural instances may implement components, operations, or structures described as a single instance. Although individual operations of one or more methods are illustrated and described as separate operations, one or more of the individual operations may be performed concurrently, and nothing requires that the operations be performed in the order illustrated. Structures and functionality presented as separate components in example configurations may be implemented as a combined structure or component. Similarly, structures and functionality presented as a single component may be implemented as separate components. These and other variations, modifications, additions, and improvements fall within the scope of the subject matter herein.

Although an overview of the inventive subject matter has been described with reference to specific example embodiments, various modifications and changes may be made to these embodiments without departing from the broader scope of embodiments of the present disclosure. Such embodiments of the inventive subject matter may be referred to herein, individually or collectively, by the term “invention” merely for convenience and without intending to voluntarily limit the scope of this application to any single disclosure or inventive concept if more than one is, in fact, disclosed.

The embodiments illustrated herein are described in sufficient detail to enable those skilled in the art to practice the teachings disclosed. Other embodiments may be used and derived therefrom, such that structural and logical substitutions and changes may be made without departing from the scope of this disclosure. The Detailed Description, therefore, is not to be taken in a limiting sense, and the scope of various embodiments is defined only by the appended claims, along with the full range of equivalents to which such claims are entitled.

As used herein, the term “or” may be construed in either an inclusive or exclusive sense. Moreover, plural instances may be provided for resources, operations, or structures described herein as a single instance. Additionally, boundaries between various resources, operations, modules, engines, and data stores are somewhat arbitrary, and particular operations are illustrated in a context of specific illustrative configurations. Other allocations of functionality are envisioned and may fall within a scope of various embodiments of the present disclosure. In general, structures and functionality presented as separate resources in the example configurations may be implemented as a combined structure or resource. Similarly, structures and functionality presented as a single resource may be implemented as separate resources. These and other variations, modifications, additions, and improvements fall within a scope of embodiments of the present disclosure as represented by the appended claims. The specification and drawings are, accordingly, to be regarded in an illustrative rather than a restrictive sense. 

What is claimed is:
 1. A system comprising: a data module to access entity data that associates respective items of a plurality of items with respective entities of a plurality of entities, each entity of the plurality of entities being a member of at least one social network service; an item module to receive an item indication, triggered by a user action of a user, that indicates a user desire for a mutual item, the user being a member of at least one social network service; an analysis module, implemented by at least one hardware processor of a machine, to identify a suggested entity from among the plurality of entities by matching the mutual item with respective items of the plurality of items, the suggested entity not having a social network connection with the user on a mutual social network service, the user and the suggested entity being members of the mutual social network service; and a presentation module to cause recommendation of a new social network connection on the mutual social network service between the user and the suggested entity.
 2. The system of claim 1, wherein: the analysis module further to identify a non-mutual item of the plurality of items that corresponds to the suggested entity, the non-mutual item not being indicated by the user desire; and the presentation module to cause presentation of the non-mutual item to the user, the presentation including an option for the user to generate another item indication that indicates a desire for the non-mutual item.
 3. A method comprising: accessing entity data that associates respective items of a plurality of items with respective entities of a plurality of entities, each entity of the plurality of entities being a member of at least one social network service; receiving an item indication, generated in response to a user action of a user, that indicates a user affinity for a mutual item, the user being a member of at least one social network service; identifying, using a hardware processor of a machine, a suggested entity from among the plurality of entities by matching the mutual item with respective items of the plurality of items, the suggested entity not having a social network connection with the user on a mutual social network service, the user and the suggested entity being members of the mutual social network service; and causing recommendation of a new social network relationship on the mutual social network service between the user and the suggested entity.
 4. The method of claim 3, further comprising: identifying a non-mutual item of the plurality of items corresponding to the suggested entity, the non-mutual item not being indicated by the user affinity; and causing presentation of the non-mutual item to the user, the presentation including an option for the user to generate another item indication that indicates an affinity for the non-mutual item.
 5. The method of claim 3, further comprising: identifying a contact entity associated with the user on a user social network service, the user being a member of the user social network service, the contact entity having asocial network relationship on the user social network service with the user; accessing a contact item corresponding to the contact entity; and causing presentation of the contact item to the user, the presentation including an option for the user to generate another item indication that indicates an affinity for the contact item.
 6. The method of claim 3, wherein the item indication is generated by: monitoring user location data, received from a user device of the user, that includes a physical user location of the user; accessing local entity location data that includes physical entity locations of local entities; identifying a local entity from among the plurality of entities by matching the user location data with the entity location data; accessing local item data corresponding to the local entity, wherein the local item data comprises a plurality of local items; and generating the item indication that indicates a user affinity for a local item included in the plurality of local items.
 7. The method of claim 6, further comprising: providing an option to purchase the local item from the local entity; and based on receiving a selection of the option to purchase the local item, facilitating the purchase of the local item including determining a pick-up time and location for the local item.
 8. The method of claim 6, wherein the user location data is received in real-time from the user device and the determining the local entity is determined in real-time.
 9. The method of claim 4, wherein the item indication is generated by: receiving user preferences associated with an affinity for items of the plurality of items; and identifying the non-mutual item based, at least in part, on the user preferences.
 10. The method of claim 3, wherein the plurality of entities includes at least one of a business, an organization, and a person.
 11. The method of claim 3, further comprising: accessing purchase history data corresponding to the plurality of entities; and associating respective entities of the plurality of entities with respective items included in the purchase history.
 12. A machine readable medium having no transitory signals and storing instructions that, when executed by at least one processor of a machine, cause the machine to perform operations comprising: accessing entity data that associates respective items of a plurality of items with respective entities of a plurality of entities, each entity of the plurality of entities being members of at least one social network service; receiving an item indication, generated in response to a user action of a user, that indicates a user affinity for a mutual item, the user being a member of at least one social network service; identifying a suggested entity from among the plurality of entities by matching the mutual item with respective items of the plurality of items, the suggested entity not having a social network connection with the user on a mutual social network service, the user and the suggested entity being members of the mutual social network service; and causing recommendation of a new social network relationship on the mutual social network service between the user and the suggested entity.
 13. The machine-readable medium of claim 12, wherein the operations further comprise: identifying a non-mutual item of the plurality of items corresponding to the proposed entity, the non-mutual item not being indicated by the user demand; and causing presentation of the non-mutual item to the user, the presentation including an option for the user to generate another item indication that indicates a demand for the non-mutual item.
 14. The machine-readable medium of claim 12, wherein the operations further comprise: identifying a contact entity associated with the user on a user social network service, the user being a member of the user social network service, the contact entity having a social network relationship on the user social network service with the user; accessing a contact item corresponding to the contact entity; and causing presentation of the contact item to the user, the presentation including an option for the user to generate another item indication that indicates an affinity for the contact item.
 15. The machine-readable medium of claim 12, wherein the operations further comprise: monitoring user location data, received from a user device of the user, that includes a physical user location of the user; accessing local entity location data that includes physical entity locations of local entities; identifying a local entity from among the plurality of entities by matching the user location data with the entity location data; accessing local item data corresponding to the local entity, wherein the local item data comprises a plurality of local items; and generating the item indication that indicates a user demand for a local item included in the plurality of local items.
 16. The machine-readable medium of claim 15, wherein the operations further comprise: providing an option to purchase the local item from the local entity; and based on receiving a selection of the option to purchase the local item, facilitating the purchase of the local item including determining a pick-up time and location for the local item.
 17. The machine-readable medium of claim 15, wherein the user location data is received in real-time from the user device and the determining the local entity is determined in real-time.
 18. The machine-readable medium of claim 13, wherein the operations further comprise: receiving user preferences associated with an affinity for items of the plurality of items; and identifying the non-mutual item based, at least in part, on the user preferences.
 19. The machine-readable medium of claim 12, wherein the plurality of entities includes at least one of a business, an organization, and a person.
 20. The machine-readable medium of claim 12, wherein the operations further comprise: accessing purchase history data corresponding to the plurality of entities; and associating respective entities of the plurality of entities with respective items included in the purchase history. 